package com.lagou.web.servlet;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import com.lagou.base.BaseServlet;
import com.lagou.pojo.Course;
import com.lagou.pojo.Course_Lesson;
import com.lagou.pojo.Course_Section;
import com.lagou.service.CourseContentService;
import com.lagou.service.impl.CourseContentServiceImpl;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;

@WebServlet("/courseContent")
public class CourseContentServlet extends BaseServlet {
    //展示对应课程的章节和课时信息
    public void findSectionAndLessonByCourseId(HttpServletRequest request, HttpServletResponse response){
        try {
            String id=request.getParameter("course_id");
            CourseContentService contentService=new CourseContentServiceImpl();
            List<Course_Section> list = contentService.findSectionAndLessonByCourseId(Integer.parseInt(id));
            String result = JSON.toJSONString(list);
            response.getWriter().print(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //课程id信息回显
    public void findCourseById(HttpServletRequest request,HttpServletResponse response){
        try {
            //获取参数
            String course_id = request.getParameter("course_id");
            CourseContentService contentService=new CourseContentServiceImpl();
            Course course = contentService.findCourseByCourseId(Integer.parseInt(course_id));
            SimplePropertyPreFilter filter=new SimplePropertyPreFilter(Course.class,"id","course_name");
            String result = JSON.toJSONString(course, filter);
            response.getWriter().print(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
        /**
         * 保存&修改章节信息
         */
        public void saveOrUpdateSection(HttpServletRequest request,HttpServletResponse response){
            try {
                //1.获取参数，从域对象中获取
                Map<String,Object> map = (Map)request.getAttribute("map");
                //2.创建Course_Section
                Course_Section section=new Course_Section();
                //3.使用BeanUtils工具类，将map中的数据封装到section
                BeanUtils.populate(section,map);
                //4.业务处理
                CourseContentService contentService=new CourseContentServiceImpl();

                if(section.getId() == 0){
                    //新增操作
                    String result=contentService.saveSection(section);
                    response.getWriter().print(result);
                }else{
                    //修改操作
                    String result = contentService.updateSection(section);
                    response.getWriter().print(result);
                }


            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        //修改章节状态
    public void updateSectionStatus(HttpServletRequest request,HttpServletResponse response){
        try {
            int id=Integer.parseInt(request.getParameter("id"));
            int status=Integer.parseInt(request.getParameter("status"));

            CourseContentService contentService=new CourseContentServiceImpl();
            String result = contentService.updateSectionStatus(id,status);
            response.getWriter().print(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void saveOrUpdateLesson(HttpServletRequest request,HttpServletResponse response){
        try {
            //1.获取参数，从域对象中获取
            Map<String,Object> map = (Map)request.getAttribute("map");
            Course_Lesson lesson=new Course_Lesson();
            BeanUtils.populate(lesson,map);
            CourseContentService contentService=new CourseContentServiceImpl();
            if(lesson.getId()==0){
                String result = contentService.saveLesson(lesson);
                response.getWriter().print(result);
            }else{
                String result = contentService.updateLesson(lesson);
                response.getWriter().print(result);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
